package _10个棘手的面试题;

/**
 * Created by jing on 2017/9/3.
 */
/*
非静态方法属于类的实例，是可以被子类重写，从而达到多态的效果；
静态方法属于类，是不能被重写，故而也不能实现多态
 */
public class _2_static_method {
    //定义一个超类A，里边定义一个静态方法和一个非静态方法：
    public static class A {
        public void unstaticMethod() {
            System.out.println("SuperClass unstaticMethod");
        }

        public static void staticMethod() {
            System.out.println("SuperClass staticMethod");
        }
    }
    //定义一个子类B，里边定义一个静态方法和一个非静态方法
    public static class B extends A {
        public void unstaticMethod() {
            System.out.println("SonClass unstaticMethod");
        }

        public static void staticMethod() { //实际上，此方法被被屏蔽了
            System.out.println("SonClass staticMethod");
        }
    }
    //测试
    public static void main(String[] args) {
        A a = new A();
        A a2 = new B();
        a.unstaticMethod();
        a2.unstaticMethod();
        a.staticMethod();
        a2.staticMethod();
        /*
        运行结果：
        SuperClass unstaticMethod
        SonClass   unstaticMethod
        SuperClass staticMethod
        SuperClass staticMethod
        从运行结果，我们可以知道，对于非静态方法，实现了多态的效果，而静态方法却没有
         */
    }
}
